/**
 * Tauri插件HTTP客户端
 * https://tauri.app/zh-cn/plugin/http-client/
 * 
 * fetch请求 POST、GET、上传文件、响应解析
 * https://developer.mozilla.org/zh-CN/docs/Web/API/Fetch_API/Using_Fetch
 * 
 * Vue 之 qs.parse()、qs.stringify()使用方法
 * https://juejin.cn/post/7212821769030336571
 */

import { fetch } from '@tauri-apps/plugin-http'
import qs from 'qs'

const apiDomain = 'http://suibian.com/'
const apiToken = 'xxxxx'

// GET方式
export function apiGetLastOrder () {
    return new Promise((resolve, reject)=>{
        fetch(apiDomain + '20250708/getContent0/', {
            method: 'GET',
            cache: "no-cache",
            headers: {
                "Token": apiToken
            }
        }).then(r=>{
            // HTTP 响应状态码
            if (!r || r.status != 200) {
                reject(r)
            } else {
                // 接口统一类型：JSON
                r.json().then(jsonResult => {
                    resolve(jsonResult)
                }).catch(jsonError => {
                    reject(jsonError)
                })
            }
        }).catch(e=>{
            reject(e)
        })
    })
}

// POST方式
export function apiGetOrderList (params) {
    return new Promise((resolve, reject)=>{
        fetch(apiDomain + '20250708/getContent1/', {
            method: 'POST',
            cache: "no-cache",
            headers: {
                "Token": apiToken,

                /**
                 【代码】"Content-Type": "application/x-www-form-urlencoded"
                 【结果】'a=1&b=2&c=true'
                 【对应】body: qs.stringify(params)
                 【缺点】丢失参数数据格式，全部都是字符串，需要前后端约定参数；还要另外安装第三方qs库；
                 【优点】PHP后台可以直接读取$_POST
                 */
                "Content-Type": "application/x-www-form-urlencoded",

                /**
                 【代码】"Content-Type": "application/json"
                 【结果】'{"a":1,"b":"2","c":true}'
                 【对应】body: JSON.stringify(params)
                 【缺点】PHP后台无法直接读取$_POST，需要使用：$post = json_decode(file_get_contents('php://input'), true);
                 【优点】完美保留参数的数据类型，前端轻松
                 */
                // "Content-Type": "application/json",

                /**
                 【代码】"Content-Type": "multipart/form-data"
                 【结果】...
                 【对应】body: formData
                 【缺点】formData定义需要参考 https://developer.mozilla.org/zh-CN/docs/Web/API/Fetch_API/Using_Fetch#%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6
                 【优点】上传文件
                 */
                // "Content-Type": "multipart/form-data",
            },
            body: qs.stringify(params)
        }).then(r=>{
            // HTTP 响应状态码
            if (!r || r.status != 200) {
                reject(r)
            } else {
                // 接口统一类型：JSON
                r.json().then(jsonResult => {
                    resolve(jsonResult)
                }).catch(jsonError => {
                    reject(jsonError)
                })
            }
        }).catch(e=>{
            reject(e)
        })
    })
}

// 上传文件 - 参考 https://developer.mozilla.org/zh-CN/docs/Web/API/Fetch_API/Using_Fetch#%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6
